package com.winchain.chainbill.bill.base.service.impl;

import com.shell.bee.persistence.service.impl.PersistentServiceImpl;
import com.winchain.chainbill.bill.base.dao.CbDctQtDao;
import com.winchain.chainbill.bill.base.po.CbDctQt;
import com.winchain.chainbill.bill.base.service.CbDctQtService;
import java.math.BigDecimal;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("cbDctQtService")
public class CbDctQtServiceImpl extends PersistentServiceImpl<CbDctQt> implements CbDctQtService {
	@Autowired
	private CbDctQtDao cbDctQtDao;

	public List<CbDctQt> selectDctQtList(CbDctQt cbDctQt) {
		return this.cbDctQtDao.selectDctQtList(cbDctQt);
	}

	public CbDctQt selectValidQt(String grpId, String finId) {
		return this.cbDctQtDao.selectValidQt(grpId, finId);
	}

	public void res(String qtId, BigDecimal dctAmt) {
		CbDctQt dctQt = (CbDctQt) selectByKey(qtId);

		dctQt.setQtUsed(dctQt.getQtUsed().subtract(dctAmt));
		updateNotNull(dctQt);
	}

	public void use(String qtId, BigDecimal dctAmt) {
		CbDctQt dctQt = (CbDctQt) selectByKey(qtId);
		dctQt.setQtBlk(dctQt.getQtBlk().subtract(dctAmt));
		dctQt.setQtUsed(dctQt.getQtUsed().add(dctAmt));
		updateNotNull(dctQt);
	}

	public void unfreeze(String qtId, BigDecimal dctAmt) {
		CbDctQt dctQt = (CbDctQt) selectByKey(qtId);

		dctQt.setQtBlk(dctQt.getQtBlk().subtract(dctAmt));
		updateNotNull(dctQt);
	}

	public void freeze(String qtId, BigDecimal dctAmt) {
		CbDctQt dctQt = (CbDctQt) selectByKey(qtId);

		dctQt.setQtBlk(dctQt.getQtBlk().add(dctAmt));
		updateNotNull(dctQt);
	}

	public List<String> selectFinIdsByGrpId(String grpId) {
		return this.cbDctQtDao.selectFinIdsByGrpId(grpId);
	}

	public List<CbDctQt> selectFinDctQtList(CbDctQt dctQt) {
		return this.cbDctQtDao.selectFinDctQtList(dctQt);
	}
}
